perm filename CKE[CHK,ALS] blob sn#272323 filedate 1977-03-26 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00024 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00004 00002	INIT1 CFZ CFOO CF1
C00007 00003	CAQBP PCCNT PCCNT1 PCCNT2
C00012 00004	RFD LFD LBD RBD RFM LFM LBM RBM RFU LFU LBU RBU RFT LFT LBT RBT RFB LFB LBB RBB RFR LFR LBR RBR FP BP FA BA AK PK AN PN
C00015 00005	DIAGZ DIAKZ CROOKZ CRKB CRKZ
C00018 00006	RECAPZ ELINEZ EMB EMW DORANZ ORMK DOR BRIDGZ BDGW BDGX BDGZ BDG1 BDG2 BDG3 BDG4 BDG5 BDG6
C00021 00007	GUARDZ GUARDW GARD2Z CKMOVZ MOVMSK SHOVEZ NODEZ
C00025 00008	PNTMSK LFTFIL RTFIL ROW2 ROW7 FSTROW LSTROW KCENTZ KMASK TRIMZ LH RH DDQUAZ DIAQAD FORAFZ FH BH FRONTZ MOBILZ
C00029 00009	MOBLZ UNDENZ DENYZ THRETZ PANTSZ
C00032 00010	ADAVNZ MIDDLZ MIDMSK DYKEZ FOURZ CRAMPZ CRAMPW
C00036 00011	PAIRZ WOOPZ CORNEZ CORNZ1 CORNZ2 CORNM1 CORNM2 CORNM3
C00039 00012	NEARZ NEARMB NEARMW MOMENZ MOMEZZ MOMZZZ MOMEZ1 MOMEZ2 PRESSZ PRESZZ PRESSM
C00042 00013	ALINEZ AMB AMW NERZ NERZ2 NERZ3 NERZ4 EDGEZ EDGMSK CENTZ
C00045 00014	CROK2Z NER3Z NER3Z2 NER3Z3 NER3Z4 FILEZ FILMSK
C00048 00015	PINPZ PINPW
C00051 00016	SHVEDZ SHVERZ SHVESZ
C00054 00017	PINKZ PINKW PINZ PINW
C00060 00018	QUICKZ QUICKP QUICKW KEYSQZ NONUSZ FILESZ FILESM
C00063 00019	SYN
C00067 00020	PHASEV PHASET CFERR1 CFERR3 CFERR2
C00070 00021	TLIST
C00072 00022	EV EVD EVD2 EEB EEB2 TESTLS
C00075 00023	TESTM TESTSH TESTS
C00077 00024	CFZ1 CFZ2 CFZ3 CFZ4 CFZ5 CFZ10 CFZ11 CEMPTY CFTAB2 CFTAB3 CFLAG DENYC THRTC UMB CFMSK CFMSK2 PHASE KSTART MSK2 OFFEDG DDIM CMSK DMSK WGRD1 WGRD2 BGRD1 BGRD2 RMASK SHOVM VULW1 VULW2 VULW3 VULW4 VULB1 VULB2 VULB3 VULB4 MSK1 MSK3 MSK4
C00080 ENDMK
C⊗;
;INIT1 CFZ CFOO CF1
	TITLE	CKE    	5/13/71 16-TERM VERSION
	LALL
	SUBTTL	SPECIAL EVALUATION MACROS -


	;REGISTER ASSIGNMENTS
;NAME     USAGE
Z←0	;SCRATCH, AND EVA SCORES
X1←1	;SCRATCH
U1←2	;SCRATCH
X2←3	;SCRATCH
U2←4	;SCRATCH
X3←5	;ACTP
U3←6	;ACTK
X4←7	;EMPTY
U4←10	;CFLAG
X5←11	;COLOR
U5←12	;PASP
Q←13	;PASK AND EV VALUES
A←14	;A
P←15	;P
K←16	;K
PDP←17	;PUSH-DOWN POINTER
	INTERN	CFTAB2
	INTERN	INIT1,CFLAG,EV,PHASE,PHASEV,TLIST,EEB,EEB2,PCCNT
	INTERN	KSTART,RFU,LFU,LBU,RBU
	EXTERN	OCT2,PRINT,TERPRI,NUMOUT,DDT
	EXTERN	LFLAG

;*****************************************************************
;     INITT WILL BE CALLED DURING INITIALIZATION OF THE PROGRAM.
;IT FILLS TABLES CFTAB2, AND CFTAB3, WHICH ARE NEEDED DURING
;EVALUATION.  IT USES, WITHOUT RESTORING, REGISTERS Z,X1,U1,X2,
;AND C4.
;
;BITSON COUNTS 1 BITS IN THE SUBSCRIPT
;     E.G.  BITSON+12 = 2
;
;CFTAB2 REVERSES THE BITS OF THE SUBSCRIPT
;     E.G.  CFTAB2+23 = 620000000000
;
;CFTAB3 MULTIPLIES THE FIRST 3 BITS OF A NUMBER BY 2*13 AND DIVIDES
;BY THE LAST 6 BITS.
;*****************************************************************


INIT1:		MOVEI	U2,41	;START WITH 1 AND 1 FOR CFTAB3
	CFZ:	MOVE	X1,U2	;TOP OF LOOP
		LSHC	X1,-5
		JUMPE	U1,CFOO	;CHECK FOR ZERO DENOMINATOR
		LSH	U1,-37	;GET DENOMINATOR RIGHT JUSTIFIED
		ASH	X1,7
		IDIVM	X1,U1
		ASH	X1,6
		MOVEM	U1,CFTAB3(U2)	;STORE QUOITIENT INTO TABLE
	CFOO:	AOJ	U2,	;BUMP FOR NEXT ITERATION
		CAIE	U2,1000	;CHECK FOR TERMINATION
		JRST	CFZ	;LOOP BACK
	CF1:	MOVEI	U2,377	;BEGINNING OF CFTAB2 INITIALIZATION
		MOVEI	X2,10
		MOVE	X1,U2
		MOVEI	U1,
		LSHC	X1,-1	;TOP OF LOOP TO REVERSE BITS
		ROT	U1,2
		SOJG	X2,.-2
		LSH	U1,33
		MOVEM	U1,CFTAB2(U2)	;STORE REVERSED BITS INTO TABLE
		SOJGE	U2,CF1+1
		POPJ	PDP,
;CAQBP PCCNT PCCNT1 PCCNT2

;*****************************************************************
;     PCCNT CALCULATES PIECE-COUNT AS FOLLOWS:  A1+A2-P1-P2/A1+A2+P1+P2
;WHERE
; A1 = 3 * ACTIVE KINGS NOT ON FRONT OR BACK EDGES
; A2 = 2 * ACTIVE NON-KINGS OR KINGS ON FRONT OR BACK EDGES
; P1 = 3 * PASSIVE KINGS NOT ON FRONT OR BACK EDGES
; P2 = 2 * PASSIVE NON-KINGS OR KINGS ON FRONT OR BACK EDGES
;
;REGISTERS Z,X1,U1,U2,U3,U4,U5,Q,A,P, AND K ARE USED.
;
;UPON EXIT, U3 HAS THE PIECE-COUNT VALUE.
;ON ENTRY IT ASSUMES THAT A,P, AND K ARE PROPERLY FILLED
;*****************************************************************

;*****************************************************************
;     CAQ SIMULATES THE 7090 CAQ INSTRUCTION.
;IT COUNTS THE 1 BITS IN REGISTER U1+1 (U1 IS AN ARGUMENT), AND
;LEAVES THE RESULT IN REGISTER PDP (AN ARGUMENT).
;THE GUARD BITS ARE ALSO SET TO ZERO IN THIS MACRO (IF THEY ARE
;TO BE USED FOR NECESSARY INFORMATION LATER, THEY MUST BE SAVED)
;*****************************************************************




DEFINE	CAQ	(U1,SUM)	<;THIS MACRO COUNTS BITS IN U1+1
	AND	U1+1,GUARDS
	MOVE	SUM,[POINT 9,U1+1]
	MOVEM	SUM,CAQBP
	ILDB	U1,CAQBP
	MOVE	SUM,BITSON(U1)
	ILDB	U1,CAQBP
	ADD	SUM,BITSON(U1)
	ILDB	U1,CAQBP
	ADD	SUM,BITSON(U1)
	ILDB	U1,CAQBP
	ADD	SUM,BITSON(U1)>

CAQBP:	Z
GUARDS:	377377377377

EXTERN	BITSON, PLY



;***************************************************************
;     CFSPEC CALCULATES UMB, THRTC, AND DENYC, WHICH ARE USED IN
;THE EVALUATION TERMS CPRTDL, THRET, AND DENFNT RESPECTIVELY.
;UPON ENTRY IT EXPECTS:
;     Z = EMPTY SQUARES
;     U1 = FORWARD ACTIVE PIECES
;     U2 = BACKWARD ACTIVE PIECES
;     U3 = RIGHT FORWARD POTENTIAL MOVES
;     U4 = LEFT FORWARD POTENTIAL MOVES
;     X5 = COLOR OF BOARD
;     U5 = LEFT BACKWARD POTENTIAL MOVES
;     Q = RIGHT BACKWARD POTENTIAL MOVES
;     A = ACTIVE PIECES (ALL)
;     P = PASSIVE PIECES (ALL)
;     K = KINGS
; THESE CONDITIONS ARE NORMALLY MET AT EXIT FROM LEGAL.
;ALL REGISTERS ARE USED, AND Z,X5,A,P, AND K ARE SAVED.
;***************************************************************

PCCNT:	MOVE	U1,P
	CAQ	X1,U5
	LSH	U5,1	;2P
	MOVN	U3,U5
	MOVE	U4,U5
	SKIPN	U1,K
	JRST	PCCNT2
	AND	U1,P
	AND	U1,OFFEDG
	JUMPE	U1,PCCNT1
	CAQ	X1,U4
	ADDB	U5,U4	;2P+PK
PCCNT1:	MOVNS	U5	;CHANCE SIGN
	MOVE	U1,A
	AND	U1,K
	AND	U1,OFFEDG
	MOVE	U3,U5
	JUMPE	U1,PCCNT2
	CAQ	X1,U3
	ADD	U3,U5	;AK-(2P+PK)
PCCNT2:	MOVE	U1,A
	CAQ	X1,U5
	LSH	U5,1
	ADD	U5,U3	;2A+AK-2P-PK
	LSH	U4,1	;4P+2PK
	ADD	U4,U5	;2A+AK+2P+PK
	LSH	U4,-1	;DIVIDE BY 2
	LSH	U5,5	;MAKE ROOM
	MOVM	U2,U5
	CAIGE	U2,1000
	JRST	.+3
	SUBI	U2,41
	JRST	.-3
	IOR	U2,U4	
	MOVE	U3,CFTAB3(U2)
	SKIPGE	U5
	MOVNS	U3
	ASH	U3,10
	POPJ	PDP,
;RFD LFD LBD RBD RFM LFM LBM RBM RFU LFU LBU RBU RFT LFT LBT RBT RFB LFB LBB RBB RFR LFR LBR RBR FP BP FA BA AK PK AN PN

	SUBTTL	MACROS FOR TERM EVALUATIONS
	PAGE

DEFINE	EMAC	(M1,M2,M3,M4)	<
	MOVE	X3,Z
	LSH	X3,M1	;-4,-5,4,5
	XOR	X3,M2	;U1,U1,U2,U2
	AND	X3,M2
	LSH	X3,M3	;-10,-12,10,12
	MOVEM	X3,M4	;RFB,LFB,LBB,RBB>

DEFINE	EVMAC	(E1,E2,E3,E4,E5,E6,E7,E8,E9,E10,E11,M4,M5,M6)	<
		SKIPN	X4,E1	;RF,LF,LB,RB
		JRST	.+33
		LSH	X4,E6	;-4,-5,4,5
		MOVEM	X4,E7
		MOVE	X3,E2	;BP,BP,FP,FP
		LSH	X3,E3	;4,5,-4,-5
		MOVE	PDP,X3
		AND	PDP,M4	;RFB,LFB,LBB,RBB
		MOVEM	PDP,M5	;RFR,LFR,LBR,RBR
		MOVE	PDP,E2
		LSH	PDP,E4	;12,10,-12,-10
		AND	PDP,Z
		LSH	PDP,E5	;-5,-4,5,4
		IOR	X3,PDP
		AND	PDP,M6	;LFB,RFB,RBB,LBB
		IORM	PDP,M5
		AND	X4,X3
		MOVEM	X4,E8	;RFD,LFD,LBD,RBD
		ANDM	X4,M5
		XOR	X4,E7
		MOVEM	X4,E9	;RFU,LFU,LBU,RBU
		MOVE	X3,Z
		LSH	X3,E10	;5,4,-5,-4
		AND	X3,P
		LSH	X3,E10
		AND	X3,E9
		MOVEM	X3,E11	;RFT,LFT,LBT,RBT
		JRST	.+6
		SETZM	E7	;RFM,LFM,LBM,RBM
		SETZM	M5	;RFR,LFR,LBR,RBR
		SETZM	E8	;RFD,LFD,LBD,RBD
		SETZM	E9	;RFU,LFU,LBU,RBU
		SETZM	E11	;RFT,LFT,LBT,RBT>

RFD:	Z		;DENY DATA
LFD:	Z
LBD:	Z
RBD:	Z
RFM:	Z		;MOBILITY DATA
LFM:	Z
LBM:	Z
RBM:	Z
RFU:	Z		;UNDENIED MOBILITY DATA
LFU:	Z
LBU:	Z
RBU:	Z
RFT:	Z		;THREAT DATA
LFT:	Z
LBT:	Z
RBT:	Z
RFB:	Z		;RF BACK UP
LFB:	Z
LBB:	Z
RBB:	Z
RFR:	Z		;RF RECAPTURE
LFR:	Z
LBR:	Z
RBR:	Z
FP:	Z		;FORWARD PASSIVE
BP:	Z		;BACKWARD PASSIVE
FA:	Z		;FORWARD ACTIVE
BA:	Z		;BACKWARD ACTIVE
AK:	Z		;ACTIVE KINGS
PK:	Z		;PASSIVE KINGS
AN:	Z		;ACTIVE NON-KINGS
PN:	Z		;PASSIVE NON-KINGS
;DIAGZ DIAKZ CROOKZ CRKB CRKZ


	DEFINE	DIAG	(USE)	<;DIAGONAL TERM ONLY
	IFN	USE,<MOVEI	U1,[ASCIZ /DIAG    /]>
	IFE	USE,<JRST	DIAGZ>>
	DIAGZ:	MOVE	U1,P	;DIAGONAL ROUTINE
		AND	U1,DDIM
		JUMPE	U1,.+16
		CAQ	X1,X4
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,

	DEFINE DIAK	(USE)	<;DIAGONAL KING TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /DIAGK   /]>
	IFE	USE,<JRST	DIAKZ>>
	DIAKZ:	MOVE	U1,PK
		AND	U1,DDIM
		JUMPE	U1,.+16
		CAQ	X1,X4
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,


DEFINE	CROOK	(USE)	<;CROOK TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /CROOK   /]>
	IFE	USE,<JRST	CROOKZ>>
	CROOKZ:	JUMPE	X5,CRKB
		MOVE	U1,Z
		LSH	U1,-4
		AND	U1,P
		LSH	U1,-4
		MOVE	U2,Z
		LSH	U2,-5
		AND	U2,P
		LSH	U2,-5
		IOR	U2,U1
		AND	U2,P
		JUMPE	U2,CRKZ+3
		MOVE	U1,Z
		LSH	U1,1
		AND	U1,P
		LSH	U1,4
		MOVE	X4,P
		LSH	X4,1
		AND	X4,Z
		LSH	X4,4
		IOR	X4,U1
		AND	X4,U2
		JUMPE	X4,CRKZ+3
		JRST	CRKZ
	CRKB:	MOVE	U1,Z
		LSH	U1,4
		AND	U1,P
		LSH	U1,4
		MOVE	U2,Z
		LSH	U2,5
		AND	U2,P
		LSH	U2,5
		IOR	U2,U1
		AND	U2,P
		JUMPE	U2,CRKZ+3
		MOVE	U1,Z
		LSH	U1,-1
		AND	U1,P
		LSH	U1,-4
		MOVE	X4,P
		LSH	X4,-1
		AND	X4,Z
		LSH	X4,-4
		IOR	X4,U1
		AND	X4,U2
		JUMPE	X4,CRKZ+3
	CRKZ:	MOVEI	X4,1
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,
;RECAPZ ELINEZ EMB EMW DORANZ ORMK DOR BRIDGZ BDGW BDGX BDGZ BDG1 BDG2 BDG3 BDG4 BDG5 BDG6

	DEFINE	RECAPT	(USE)	<;RECAPTURE TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /RECAPT  /]>
	IFE	USE,<JRST	RECAPZ>>
	RECAPZ:	MOVE	U1,RFR
		IOR	U1,LFR
		IOR	U1,LBR
		IOR	U1,RBR
		JUMPE	U1,.+16
		CAQ	X1,X4
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,

	
		DEFINE	ELINE	(USE)	<;ELINE TERM (S)
	IFN	USE,<MOVEI	U1,[ASCIZ /ELINE   /]>
	IFE	USE,<JRST	ELINEZ>>
	ELINEZ:	MOVE	U1,PN
		JUMPE	X5,.+3
		AND	U1,EMB
		JRST	.+2
		AND	U1,EMW
		JUMPE	U1,.+16
		CAQ	X1,X4
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,
EMB:	142104210000
EMW:	000021042106

		DEFINE	DORIO	(USE)	<;DORIO PLUS ANGLE TERM (S)
	IFN	USE,<MOVEI	U1,[ASCIZ /DORIO   /]>
	IFE	USE,<JRST	DORANZ>>
	DORANZ:	MOVE	U1,P	;DORIO ROUTINE
		AND	U1,DOR
		SETCM	U2,P	;ANGLE ROUTINE
		AND	U2,ORMK
		IOR	U2,U1
		JUMPE	U2,.+16
		CAQ	X2,X4
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,
ORMK:	021020010210
DOR:	246100002145

		DEFINE	BRIDGE	(USE)	<;BRIDGE TERM (S)
	IFN	USE,<MOVEI	U1,[ASCIZ /BRIDGE  /]>
	IFE	USE,<JRST	BRIDGZ>>
	BRIDGZ:	JUMPE	X5,BDGW
		MOVE	U1,PN		;PASSIVE NON-KINGS
		AND	U1,BDG1
		XOR	U1,BDG1
		JUMPE	U1,BDGX
		MOVE	U1,PN
		AND	U1,BDG2
		XOR	U1,BDG2
		JUMPN	U1,BDGZ+3
		MOVE	U1,PN
		AND	U1,BDG5
		JUMPE	BDGZ+3
		JRST	BDGZ
		JRST	BDGZ+3
	BDGW:	MOVE	U1,PN
		AND	U1,BDG3
		XOR	U1,BDG3
		JUMPN	U1,.+3
	BDGX:	MOVEI	X4,2
		JRST	BDGZ+1
		MOVE	U1,PN
		AND	U1,BDG4
		XOR	U1,BDG4
		JUMPE	U1,BDGZ+3
		MOVE	U1,PN
		AND	U1,BDG6
		JUMPE	BDGZ+3
	BDGZ:	MOVEI	X4,1
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,
BDG1:	240000000000
BDG2:	110000000000
BDG3:	000000000005
BDG4:	000000000022
BDG5:	060000000000
BDG6:	000000000014
;GUARDZ GUARDW GARD2Z CKMOVZ MOVMSK SHOVEZ NODEZ
	
	DEFINE	GUARD	(USE)	<;GUARD TERM (S)
	IFN	USE,<MOVEI	U1,[ASCIZ /GUARD   /]>
	IFE	USE,<JRST	GUARDZ>>

	GUARDZ:	MOVE	X1,PN
	MOVEI	X4,0
	TDNN	X1,[340000000007]	;1,2,3 OR 30,31,32
	POPJ	PDP,		;MUST BE 4 OR 29 ONLY OR EMPTY
	MOVEI	X4,1
	TDNN	X1,[140000000006]	;2,3 OR 30,31
	POPJ	PDP,		;MUST BE 1 OR 32 ONLY
	TDNN	X1,[300000000003]	;1,2 OR 31,32
	POPJ	PDP,		;MUST BE 3 OR 30 ONLY
	TDNN	X1,[240000000005]	;1,3 OR30,32
	POPJ	PDP,		;MUST BE 2 OR 31 ONLY
	SETCM	U1,X1
	MOVEI	X4,4
	JUMPE	X5,GUARDW
	TDNN	U1,[340000000000]	;1,2,3
	POPJ	PDP,		;FULL GUARD
	MOVEI	X4,3
	TDNN	U1,[240000000000]	;1 AND 3
	POPJ	PDP,		;BRIDGE POSITION
	MOVEI	X4,2
	POPJ	PDP,		;1,2 OR 2,3
GUARDW:	TDNN	U1,[000000000007]	;30,31,32
	POPJ	PDP,		;FULL GUARD
	MOVEI	X4,3
	TDNN	U1,[000000000005]	;30 AND 32
	POPJ	PDP,		;BRIDGE POSITION
	MOVEI	X4,2
	POPJ	PDP,		;30,30 OR 31,32

DEFINE	GARD2	(USE)	<;GARD2 TERM (S)
	IFN	USE,<MOVEI	U1,[ASCIZ /GARD2   /]>
	IFE	USE,<JRST	GARD2Z>>

	GARD2Z:	MOVE	X1,PN
	MOVEI	X4,0
	TDNN	X1,[340000000007]	;1,2,3 OR 30,31,32
	POPJ	PDP,		;MUST BE 4 OR 29 ONLY OR EMPTY
	MOVEI	X4,1
	TDNN	X1,[304000000043]	
	POPJ	PDP,		;3 BUT NOT 1 2 OR 6 EQUIVALENT
	TDNN	X1,[143000000306]
	POPJ	PDP,		;1 BUT NOT 2 3 7 0R 8 0R EQUIV.
	TDNN	X1,[261000000215]
	POPJ	PDP,		;2 BUT NOT 1 3 4 OR 8 OR EQUIV.
	MOVEI	X4,2
	POPJ	PDP,

	DEFINE	CKMOVE	(USE)	<;MOVE TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /CKMOVE  /]>
	IFE	USE,<JRST	CKMOVZ>>
	CKMOVZ:	MOVE	U1,Z
		AND	U1,MOVMSK
		CAQ	X1,X4
		ANDI	X4,1
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,
MOVMSK:	360360360360

	DEFINE	SHOVE	(USE)	<;SHOVE TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /SHOVE   /]>
	IFE	USE,<JRST	SHOVEZ>>
	SHOVEZ:	MOVE	U1,FP
		LSH	U1,-11
		MOVE	U2,BP
		LSH	U2,11
		IOR	U1,U2
		SKIPN	U2,PK
		JRST	.+6
		AND	U2,[006146146140]
		LSH	U2,-1
		IOR	U1,U2
		LSH	U2,2
		IOR	U1,U2
		AND	U1,A
		JUMPE	U1,.+16
		CAQ	X1,X4
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,

	DEFINE	NODE	(USE)	<;NODE TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /NODE    /]>
	IFE	USE,<JRST	NODEZ>>
	NODEZ:	MOVE	X4,Z
		LSH	X4,1
		AND	X4,Z
		JUMPN	X5,.+3
		LSH	X4,-5
		JRST	.+2
		LSH	X4,4
		AND	X4,PN
		JUMPE	X4,.+4
		MOVEI	X4,1
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,
;PNTMSK LFTFIL RTFIL ROW2 ROW7 FSTROW LSTROW KCENTZ KMASK TRIMZ LH RH DDQUAZ DIAQAD FORAFZ FH BH FRONTZ MOBILZ


PNTMSK:	143143143143

LFTFIL:	020020020020
RTFIL:	010010010010
ROW2:	200200200200
ROW7:	001001001001
FSTROW:	360000000000
LSTROW:	000000000017


		DEFINE	KCENT	(USE)	<;KING CENTER TERM (S)
		IFN	USE,<MOVEI	U1,[ASCIZ /KCENT   /]>
		IFE	USE,<JRST	KCENTZ>>
	KCENTZ:	MOVE	X4,PK	;GET PASK
		AND	X4,KMASK	;CENTRAL KINGS ONLY
		JUMPE	X4,.+4
		MOVEI	X4,1
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,
KMASK:	000146146000

	DEFINE	TRIM	(USE)	<;SIDE TO SIDE BALANCE
	IFN	USE,<MOVEI	U1,[ASCIZ /TRIM    /]>
	IFE	USE,<JRST	TRIMZ>>
	TRIMZ:	MOVE	U1,P
		AND	U1,RH
		CAQ	X1,X4
		MOVE	U1,P
		AND	U1,LH
		CAQ	X1,X3
		SUB	X4,X3
		MOVMS	X4
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,
LH:	063063063063
RH:	314314314314

	DEFINE	DDQUAD	(USE)	<;DOUBLE DIAG QUADRANTS
	IFN	USE,<MOVEI	U1,[ASCIZ /DDQUAD  /]>
	IFE	USE,<JRST	DDQUAZ>>
	DDQUAZ:	MOVE	U1,P
		AND	U1,DIAQAD
		CAQ	X1,X4
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,
DIAQAD:	313314063063

	DEFINE	FORAFT	(USE)	<;FRONT TO BACK BALANCE
	IFN	USE,<MOVEI	U1,[ASCIZ /FORAFT  /]>
	IFE	USE,<JRST	FORAFZ>>
	FORAFZ:	MOVE	U1,P
		AND	U1,FH
		CAQ	X1,X4
		MOVE	U1,P
		AND	U1,BH
		CAQ	X1,X3
		SUB	X4,X3
		MOVMS	X4
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,
FH:	000000377372
BH:	167377000000

	DEFINE	FRONT	(USE)	<;FRONT TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /FRONT   /]>
	IFE	USE,<JRST	FRONTZ>>
	FRONTZ:	MOVE	U1,PN
		JUMPE	X5,.+3
		AND	U1,DMSK
		JRST	.+2
		AND	U1,CMSK
		JUMPE	U1,.+16
		CAQ	X1,X4
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,

	DEFINE	MOBIL	(USE)	<;MOBILITY TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /MOBIL   /]>
	IFE	USE,<JRST	MOBILZ>>
	MOBILZ:	MOVE	U1,RFM
		IOR	U1,LFM
		IOR	U1,RBM
		IOR	U1,LBM
		CAQ	X1,X4
		MOVNS	X4
		ADDI	X4,17
		CAIGE	X4,0
		SETZ	X4,
		POPJ	PDP,
;MOBLZ UNDENZ DENYZ THRETZ PANTSZ

DEFINE	MOBIL2	(USE)	<;MOBILITY 2 TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /MOBIL2  /]>
	IFE	USE,<JRST	MOBLZ>>

MOBLZ:	MOVE	U1,RFM
	CAQ	X1,X4
	MOVE	U1,LFM
	CAQ	X1,X3
	ADD	X4,X3
	MOVE	U1,LBM
	CAQ	X1,X3
	ADD	X4,X3
	MOVE	U1,RBM
	CAQ	X1,X3
	ADD	X4,X3
	CAILE	X4,17
	MOVEI	X4,17
	POPJ	PDP,

	DEFINE	UNDENY	(USE)	<;UNDENIED MOBILITY TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /UNDENY  /]>
	IFE	USE,<JRST	UNDENZ>>
	UNDENZ:	MOVE	U1,RFU
		IOR	U1,LFU
		IOR	U1,LBU
		IOR	U1,RBU
		JUMPE	U1,.+16		;TO JUMP CAQ+2
		CAQ	X1,X4
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,

	DEFINE	DENY	(USE)	<;DENY TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /DENY    /]>
	IFE	USE,<JRST	DENYZ>>
	DENYZ:	MOVE	U1,RFD
		IOR	U1,LFD
		IOR	U1,LBD
		IOR	U1,RBD
		JUMPE	U1,.+16		;TO JUMP CAQ+2
		CAQ	X1,X4
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,

		DEFINE	THREAT	(USE)	<;THREAT TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /THREAT  /]>
	IFE	USE,<JRST	THRETZ>>
	THRETZ:	MOVE	U1,RFT
		IOR	U1,LFT
		IOR	U1,LBT
		IOR	U1,RBT
		JUMPE	U1,.+16		;TO JUMP CAQ+2
		CAQ	X1,X4
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,

	DEFINE	PANTS	(USE)	<;PANTS TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /PANTS   /]>
	IFE	USE,<JRST	PANTSZ>>
	PANTSZ:	MOVE	X4,AN
		AND	X4,PNTMSK
		LSH	X4,1
		AND	X4,AN
		JUMPE	X5,.+3
		LSH	X4,-5
		JRST	.+2
		LSH	X4,4
		AND	X4,PK
		JUMPE	X4,.+4
		MOVEI	X4,1
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,
;ADAVNZ MIDDLZ MIDMSK DYKEZ FOURZ CRAMPZ CRAMPW

DEFINE	ADVAN	(USE)<;PIECE ADVANCEMENT
IFN	USE,<MOVEI	U1,[ASCIZ /ADVAN   /]>
IFE	USE,<JRST	ADAVNZ>>
ADAVNZ:	MOVE	U1,AN
	IOR	U1,PN
	JUMPE	X5,.+3
	AND	U1,[000000377000]
	JRST	.+2
	AND	U1,[000377000000]
	CAQ	X1,X4
	POPJ	PDP,

DEFINE	MIDDLE	(USE)<;MIDDLE CONTROL
IFN	USE,<MOVEI	U1,[ASCIZ /MIDDLE  /]>
IFE	USE,<JRST	MIDDLZ>>
	MIDDLZ:MOVE	U1,P
	AND	U1,MIDMSK
	CAQ	X1,X4
		POPJ	PDP,

MIDMSK:	000146146000

DEFINE	DYKE	(USE)<;DYKE TERM
IFN	USE,<MOVEI		U1,[ASCIZ /DYKE    /]>
IFE	USE,<JRST	DYKEZ>>
DYKEZ:	MOVE	U1,PN
	LSH	U1,4
	AND	U1,PN
	LSH	U1,4
	AND	U1,PN
	MOVE	U2,PN
	LSH	U2,5
	AND	U2,PN
	LSH	U2,5
	AND	U2,PN
	JUMPE	X5,.+4
	LSH	U1,4
	LSH	U2,5
	JRST	.+3
	LSH	U1,-14
	LSH	U2,-17
	IOR	U1,U2
	SETCM	U2,Z
	AND	U1,U2
	JUMPE	U1,.+16
	CAQ	X1,X4
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,

DEFINE	FOUR	(USE)	<;FOUR IN A ROW
IFN	USE,<MOVEI	U1,[ASCIZ /FOUR    /]>
IFE	USE,<JRST	FOURZ>>
FOURZ:	MOVE	U1,PN
	LSH	U1,4
	AND	U1,PN
	LSH	U1,4
	AND	U1,PN
	LSH	U1,4
	MOVE	U2,PN
	LSH	U2,-5
	AND	U2,PN
	LSH	U2,-5
	AND	U2,PN
	LSH	U2,-5
	IOR	U1,U2
	AND	U1,PN
	JUMPE	U1,.+16
	CAQ	X1,X4
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,

DEFINE	CRAMP	(USE)	<;CRAMP TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /CRAMP  /]>
	IFE	USE,<JRST	CRAMPZ>>
CRAMPZ:	MOVEI	X4,2
	MOVE	X1,PN
	SETCM	U1,X1
	MOVE	X2,AN
	SETCM	U2,X2
	SETCM	X3,Z
	JUMPE	X5,CRAMPW
					;SINGLE CORNER
	TDNN	U1,[000312000000]	;9,10,13,15
	TDNE	U2,[000000214000]	;17,21,22
	JRST	.+3
	TDNN	X3,[000004100000]	;14,18 
	ADDI	X4,1
	TDNN	U1,[000114000000]	;10,13,14 BLACK OCCUPIED
	TDNE	U2,[000000214200]	;17,21,22,25 WHITE OCCUPIED
	SUBI	X4,1
	TDNN	U1,[000011020000]	;12,16,20 BLACK OCCUPIES
	TDNE	U2,[000000043040]	;19,23,24,27 WHITE
	SUBI	X4,1
	POPJ	PDP,
;WHITE PASSIVE				SINGLE CORNER
CRAMPW:	TDNN	U1,[000000123000]	;18,20,23,24
	TDNE	U2,[000061000000]	;11,12,16
	JRST	.+3
	TDNN	X3,[000002040000]	;15,19
	ADDI	X4,1
	TDNN	U1,[000000062000]	;19,20,23 WHITE PCCUPIED
	TDNE	U2,[001061000000]	;8,11,12,16 BLACK OCCUPIED
	SUBI	X4,1
	TDNN	U1,[000010210000]	;13,17,21 WHITE OCCUPIES
	TDNE	U2,[004304000000]	;6,9,10,14 BLACK
	SUBI	X4,1
	POPJ	PDP,
;PAIRZ WOOPZ CORNEZ CORNZ1 CORNZ2 CORNM1 CORNM2 CORNM3

DEFINE	PAIRS	(USE)	<;DIAGONAL PAIRS
IFN	USE,<MOVEI	U1,[ASCIZ /PAIRS   /]>
IFE	USE,<JRST	PAIRZ>>
PAIRZ:	MOVE	U1,PN
	LSH	U1,4
	AND	U1,PN
	CAQ	X1,U2
	MOVE	U1,PN
	LSH	U1,5
	AND	U1,PN
	CAQ	X1,X4
	ADD	X4,U2
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,

DEFINE	WOOPS	(USE)<;SHOT WEAKNESS
	IFN	USE,<MOVEI	U1,[ASCIZ /WOOPS   /]>
	IFE	USE,<JRST	WOOPZ>>

WOOPZ:	MOVEI	X4,2
	SETCM	U1,P
	AND	U1,[017377377377]
	LSH	U1,11
	ANDCM	U1,P		;EMPTY FORE AND AFT
	MOVE	X1,P
	AND	X1,[003143143140]
	LSH	X1,1
	AND	X1,P		;PASSIVE SIDE BY SIDE
	LSH	X1,4
	AND	X1,U1
	SKIPN	X1
	SUBI	X4,1
	SETCM	U1,P
	AND	U1,[000167167000]
	LSH	U1,1
	ANDCM	U1,P		;EMPTY SIDE BY SIDE
	MOVE	X1,P
	AND	X1,[000007347340]
	LSH	X1,11
	AND	X1,P		;PASSIVE FORE AND AFT
	LSH	U1,4
	AND	X1,U1
	SKIPN	X1
	SUBI	X4,1
	POPJ	PDP,

DEFINE	CORNER	(USE)<;DOUBLE CORNER DISTANCE
	IFN	USE,<MOVEI	U1,[ASCIZ /CORNER  /]>
	IFE	USE,<JRST	CORNEZ>>

CORNEZ:	MOVE	X4,P
	AND	X4,CORNM3
	JUMPE	X4,CORNZ2
	MOVE	U1,X4
	CAQ	X1,X4
	MOVE	U1,P
	AND	U1,CORNM2
	JUMPE	U1,CORNZ1
	CAQ	X1,X3
	ADD	X4,X3
	MOVE	U1,P
	AND	U1,CORNM1
	JUMPE	U1,CORNZ1
	CAQ	X1,X3
	ADD	X4,X3
CORNZ1:	CAILE	X4,17
	MOVEI	X4,17
CORNZ2:	POPJ	PDP,

CORNM1:	214200001061
CORNM2:	314314063063
CORNM3:	316317363163
;NEARZ NEARMB NEARMW MOMENZ MOMEZZ MOMZZZ MOMEZ1 MOMEZ2 PRESSZ PRESZZ PRESSM

DEFINE 	NEAR	(USE)<;NEARNESS TO BOTH CORNERS
	IFN	USE,<MOVEI	U1,[ASCIZ /NEAR    /]>
	IFE	USE,<JRST	NEARZ>>

NEARZ:	SETZ	X4,
	MOVE	U2,P
	IOR	U2,A
	MOVEI	U1,6
	MOVE	X1,U2
	AND	X1,NEARMB(U1)
	SKIPN	X1
	SOJA	U1,.-3
	AND	X1,A		
	SKIPE	X1		;IS PASSIVE NEARER
	POPJ	PDP,		;NO
	MOVEI	U1,6
	MOVE	X1,U2
	AND	X1,NEARMW(U1)
	SKIPN	X1
	SOJA	U1,.-3
	AND	X1,A
	SKIPN	X1		;IS PASSIVE NEARER TO THIS ONE
	ADDI	X4,1		;YES
	POPJ	PDP,


NEARMB:	377377377377
	357357357340
	356356356000
	316316300000
	314314000000
	214200000000
	210000000000
NEARMW:	377377377377
	007367367367
	000167167167
	000003163163
	000000063063
	000000001061
	000000000021

DEFINE	MOMENT	(USE)<;DOUBLE DIAG MOMENT
	IFN	USE,<MOVEI	U1,[ASCIZ /MOMENT  /]>
	IFE	USE,<JRST	MOMENZ>>

MOMENZ:	MOVE	U1,P
	AND	U1,MOMEZ2
	JUMPE	U1,MOMZZZ
	CAQ	X1,X4
	MOVE	U1,P
	AND	U1,MOMEZ1
	JUMPE	U1,MOMEZZ
	CAQ	X1,X3
	ADD	X4,X3
MOMEZZ:	CAILE	X4,17
	MOVEI	X4,17
	POPJ	PDP,
MOMZZZ:	AOS	(PDP)
	AOS	(PDP)
	POPJ	PDP,

MOMEZ1:	214306143061
MOMEZ2:	316357367163

DEFINE	PRESS	(USE)<;PRESSURE TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /PRESS   /]>
	IFE	USE,<JRST	PRESSZ>>

PRESSZ:	MOVE	U1,PK
	JUMPE	U1,PRESZZ
	LSH	U1,11
	MOVE	U2,PK
	LSH	U2,-11
	IOR	U1,U2
	MOVE	U2,PK
	LSH	U2,1
	AND	U2,PRESSM
	IOR	U1,U2
	MOVE	U2,PK
	AND	U2,PRESSM
	LSH	U2,-1
	IOR	U1,U2
	AND	U1,A
	JUMPE	U1,PRESZZ
	CAQ	X1,X4
	POPJ	PDP,
PRESZZ:	AOS	(PDP)
	AOS	(PDP)
	POPJ	PDP,

PRESSM:	167167167167
;ALINEZ AMB AMW NERZ NERZ2 NERZ3 NERZ4 EDGEZ EDGMSK CENTZ

		DEFINE	ALINE	(USE)	<;ALINE TERM (S)
	IFN	USE,<MOVEI	U1,[ASCIZ /ALINE   /]>
	IFE	USE,<JRST	ALINEZ>>
	ALINEZ:	MOVE	U1,PN
		JUMPE	X5,.+3
		AND	U1,AMB
		JRST	.+2
		AND	U1,AMW
		JUMPE	U1,.+16
		CAQ	X1,X4
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,
AMB:	246102040020
AMW:	010204102145
NEARSS:	0

DEFINE 	NEAR2	(USE)<;NEARNESS TO BOTH DOUBLE CORNERS
	IFN	USE,<MOVEI	U1,[ASCIZ /NEAR2   /]>
	IFE	USE,<JRST	NERZ>>

NERZ:	SETZM	NEARSS
	MOVE	U2,P
	IOR	U2,A
	MOVEI	U1,6
	MOVE	X1,U2
	AND	X1,NEARMB(U1)
	SKIPN	X1
	SOJA	U1,.-3
	AND	X1,A		
	SKIPN	X1		;IS PASSIVE NEARER ONE D.C.
	AOS	NEARSS		;YES
	MOVEI	U1,6
	MOVE	X1,U2
	AND	X1,NEARMW(U1)
	SKIPN	X1
	SOJA	U1,.-3
	AND	X1,A
	SKIPN	X1		;IS PASSIVE NEARER TO THIS ONE
	AOS	NEARSS		;YES
	MOVE	U1,A
	CAQ	X1,U2
	MOVE	U1,P
	CAQ	X1,X4
	CAMN	U2,X4
	JRST	NERZ3		;PIECES EQUAL
	CAMG	U2,X4
	JRST	NERZ4		;P>A SO SHOULD CONTROL BOTH
NERZ2:	SETZ	X4,
	SKIPE	NEARSS
	ADDI	X4,1		;CREDIT P IF CAN RUN
	POPJ	PDP,

NERZ3:	MOVE	U1,P
	IOR	U1,A
	AND	U1,[360360360360]
	CAQ	X1,U2
	TRNE	U2,1		;WHO HAS MOVE
	JRST	NERZ2		;A SO P SHOULD RUN
NERZ4:	SETZ	X4,
	SOSLE	NEARSS
	ADDI	X4,1		;CREDIT P IF CONTROL BOTH
	POPJ	PDP,

DEFINE	EDGE	(USE)<;EDGE PIECE COUNT
	IFN	USE,<MOVEI	U1,[ASCIZ /EDGE    /]>
	IFE	USE,<JRST	EDGEZ>>

EDGEZ:	MOVE	U1,PN
	AND	U1,EDGMSK
	JUMPE	U1,.+15
	CAQ	X1,X4
	POPJ	PDP,
	AOS	(PDP)
	AOS	(PDP)
	POPJ	PDP,

EDGMSK:	350030030027

DEFINE	CENT	(USE)<;CENTER CONTROL
	IFN	USE,<MOVEI	U1,[ASCIZ /CENT    /]>
	IFE	USE,<JRST	CENTZ>>

CENTZ:	MOVE	U1,P
	AND	U1,KMASK
	CAQ	X1,X4
	POPJ	PDP,
;CROK2Z NER3Z NER3Z2 NER3Z3 NER3Z4 FILEZ FILMSK

DEFINE CROOK2	(USE)<;SIMPLE CROOK
	IFN	USE,<MOVEI	U1,[ASCIZ /CROOK2  /]>
	IFE	USE,<JRST	CROK2Z>>

CROK2Z:	MOVE	U1,P
	LSH	U1,11
	AND	U1,P
	MOVE	X1,P
	LSH	X1,1
	IOR	X1,P
	LSH	X1,4
	AND	U1,X1
	CAQ	X1,X4
	POPJ	PDP,

DEFINE 	NEAR3	(USE)<;NEARNESS TO BOTH DOUBLE CORNERS
	IFN	USE,<MOVEI	U1,[ASCIZ /NEAR3   /]>
	IFE	USE,<JRST	NER3Z>>

NER3Z:	SETZB	X4,NEARSS
	MOVE	U2,P
	IOR	U2,A
	MOVEI	U1,6
	MOVE	X1,U2
	AND	X1,NEARMB(U1)
	SKIPN	X1
	SOJA	U1,.-3
	AND	X1,A		
	SKIPN	X1		;IS PASSIVE NEARER ONE D.C.
	AOS	NEARSS		;YES
	MOVEI	U1,6
	MOVE	X1,U2
	AND	X1,NEARMW(U1)
	SKIPN	X1
	SOJA	U1,.-3
	AND	X1,A
	SKIPN	X1		;IS PASSIVE NEARER TO THIS ONE
	AOS	NEARSS		;YES
	MOVE	U1,A
	CAQ	X1,U2
	MOVE	U1,P
	CAQ	X1,X3
	CAMN	U2,X3
	JRST	NER3Z3		;PIECES EQUAL
	CAMG	U2,X3
	JRST	NER3Z4		;P>A SO SHOULD CONTROL BOTH
NER3Z2:	SKIPE	NEARSS
	ADDI	X4,1		;CREDIT P IF CAN RUN
	POPJ	PDP,

NER3Z3:	MOVE	U1,P
	IOR	U1,A
	AND	U1,[360360360360]
	CAQ	X1,U2
	TRNE	U2,1		;WHO HAS MOVE
	JRST	NER3Z2		;A SO P SHOULD RUN
NER3Z4:	ADDI	X4,1		;CREDIT FOR MOVE OR AHEAD
	SOSLE	NEARSS
	ADDI	X4,1		;CREDIT P IF CONTROL BOTH
	POPJ	PDP,

DEFINE	FILE	(USE)<;FILE PIECE COUNT
	IFN	USE,<MOVEI	U1,[ASCIZ /FILE    /]>
	IFE	USE,<JRST	FILEZ>>

FILEZ:	MOVE	U1,P
	AND	U1,FILMSK
	JUMPE	U1,.+15
	CAQ	X1,X4
	POPJ	PDP,
	AOS	(PDP)
	AOS	(PDP)
	POPJ	PDP,

FILMSK:	044044044044
;PINPZ PINPW

DEFINE	PINP	(USE)	<;PINP TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /PINP   /]>
	IFE	USE,<JRST	PINPZ>>
PINPZ:	MOVEI	X4,5
	MOVE	X1,PN
	SETCM	U1,X1
	MOVE	X2,AN
	SETCM	U2,X2
	SETCM	X3,Z
	JUMPE	X5,PINPW
					;SINGLE CORNER
	TDNN	U1,[000312000000]	;9,10,13,15
	TDNE	U2,[000000214000]	;17,21,22
	JRST	.+3
	TDNN	X3,[000004100000]	;14,18 
	ADDI	X4,1
	TDNN	U1,[000114000000]	;10,13,14 BLACK OCCUPIED
	TDNE	U2,[000000214200]	;17,21,22,25 WHITE OCCUPIED
	SUBI	X4,1
	TDNN	U1,[000011020000]	;12,16,20 BLACK OCCUPIES
	TDNE	U2,[000000043040]	;19,23,24,27 WHITE
	SUBI	X4,1
	TDNE	U1,[000000004000]	;22 BACK ROW PINP
	JRST	.+3
	TDNN	U2,[000000000012]	;29,31
	TDNE	X3,[000000000304]	;25,26,30 EMPTY
	SUBI	X4,1
	TDNE	U1,[041000000000]	;3,8  3 BY 2 LEFT
	JRST	.+3
	TDNN	U2,[000021020000]	;12,16,20
	TDNE	X3,[020042000000]	;4,11,15 EMPTY
	SUBI	X4,1
	TDNE	U1,[004200000000]	;6,9 3BY2 RIGHT
	JRST	.+3
	TDNN	U2,[000010210000]	;13,17,21
	TDNE	X3,[210004100000]	;1,5,14,18
	SUBI	X4,1
	POPJ	PDP,
;WHITE PASSIVE				SINGLE CORNER
PINPW:	TDNN	U1,[000000123000]	;18,20,23,24
	TDNE	U2,[000061000000]	;11,12,16
	JRST	.+3
	TDNN	X3,[000002040000]	;15,19
	ADDI	X4,1
	TDNN	U1,[000000062000]	;19,20,23 WHITE PCCUPIED
	TDNE	U2,[001061000000]	;8,11,12,16 BLACK OCCUPIED
	SUBI	X4,1
	TDNN	U1,[000010210000]	;13,17,21 WHITE OCCUPIES
	TDNE	U2,[004304000000]	;6,9,10,14 BLACK
	SUBI	X4,1
	TDNE	U1,[000040000000]	;11 BACK ROW
	JRST	.+3
	TDNN	U2,[120000000000]	;2,4
	TDNE	X3,[043000000000]	;3,7,8
	SUBI	X4,1
	TDNE	U1,[000000001040]	;24,27 3BY2 LEFT
	JRST	.+3
	TDNN	U2,[000021020000]	;12,16,20
	TDNE	X3,[000002040021]	;15,19,28,32
	SUBI	X4,1
	TDNE	U1,[000000000204]	;25,30 3BY2 RIGHT
	JRST	.+3
	TDNN	U2,[000010210000]	;13,17,21
	TDNE	X3,[000000104010]	;18,22,29
	SUBI	X4,1
	POPJ	PDP,
;SHVEDZ SHVERZ SHVESZ

	DEFINE	SHOVED	(USE)	<;SHOVED TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /SHOVED  /]>
	IFE	USE,<JRST	SHVEDZ>>
	SHVEDZ:	MOVE	U1,FP
		LSH	U1,-11
		MOVE	U2,BP
		LSH	U2,11
		IOR	U1,U2
	MOVE	U2,FP
	AND	U2,[167167167167]
	LSH	U2,-10
	IOR	U1,U2
	MOVE	U2,FP
	AND	U2,[356356356356]
	LSH	U2,-12
	IOR	U1,U2
	MOVE	U2,BP
	AND	U2,[167167167167]
	LSH	U2,10
	IOR	U1,U2
	MOVE	U2,BP
	AND	U2,[356356356356]
	LSH	U2,12
	IOR	U1,U2
		SKIPN	U2,PK
		JRST	.+6
		AND	U2,[00146146000]
		LSH	U2,-1
		IOR	U1,U2
		LSH	U2,2
		IOR	U1,U2
		AND	U1,A
		JUMPE	U1,.+15
		CAQ	X1,X4
		POPJ	PDP,
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,

	DEFINE	SHOVER	(USE)	<; PIECES DOING SHOVING
	IFN	USE,<MOVEI	U1,[ASCIZ /SHOVER  /]>
	IFE	USE,<JRST	SHVERZ>>
SHVERZ:	MOVE	U1,A		;NOW COUNT PASSIVE PIECES
	LSH	U1,11
	MOVE	U2,A
	AND	U2,[167167167167]
	LSH	U2,10
	MOVE	U3,A
	AND	U3,[356356356356]
	LSH	U3,12
	IOR	U2,U3
	XOR	U1,U2
	AND	U1,FP
	MOVE	U2,A
	LSH	U2,-11
	MOVE	U3,A
	AND	U3,[167167167167]
	LSH	U3,-10
	MOVE	Z,A
	AND	Z,[356356356356]
	LSH	Z,-12
	IOR	U3,Z
	XOR	U2,U3
	AND	U2,BP
	IOR	U1,U2
	MOVE	U2,A
	LSH	U2,1
	MOVE	X4,A
	LSH	X4,-1
	IOR	U2,X4
	AND	U2,PK
	AND	U2,[000146146000]
	IOR	U1,U2
	JUMPE	U1,.+15
	CAQ	X1,X4
	POPJ	PDP,
	AOS	(PDP)
	AOS	(PDP)
	POPJ	PDP,

	DEFINE	SHOVES	(USE)	<;SHOVES TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /SHOVES  /]>
	IFE	USE,<JRST	SHVESZ>>
SHVESZ:	PUSHJ	PDP,SHVERZ
	MOVEM	X4,X4SHV#
	JRST	.+2
	SETZM	X4SHV
	PUSHJ	PDP,SHVEDZ
	ADD	X4,X4SHV
	POPJ	PDP,
	MOVE	X4,X4SHV
	POPJ	PDP,
;PINKZ PINKW PINZ PINW

DEFINE	PINK	(USE)	<;PINK TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /PINK    /]>
	IFE	USE,<JRST	PINKZ>>
PINKZ:	SKIPN	U1,PK
	POPJ	PDP,
	SETCM	U2,AN
	MOVEI	X4,6
	JUMPE	X5,PINKW
	TDNE	U1,[000040000000]	;11  LEFT EDGE
	TDNE	U2,[000020020000]	;12,20
	SUBI	X4,1
	TDNE	U1,[000000040000]	;19	LEFT EDGE
	TDNE	U2,[000000020020]	;20,28
	SUBI	X4,1
	TDNE	U1,[000004000000]	;14 RIGHT EDGE
	TDNE	U2,[000010010000]	;13,21
	SUBI	X4,1
	TDNE	U1,[000000004000]	;22 RIGHT EDGE
	TDNE	U2,[000000010010]	;21,29
	SUBI	X4,1
	TDNE	U1,[000000004000]	;22
	TDNE	U2,[000000010004]	;21,30
	SUBI	X4,1
	TDNE	U1,[000040000000]	;11
	TDNE	U2,[000000020000]	;20
	JRST	.+3
	MOVE	U2,AK
	TDNN	U2,[020000000000]	;4
	SUBI	X4,1
	POPJ	PDP,
PINKW:	TDNE	U1,[000040000000]	;11 LEFT EDGE
	TDNE	U2,[020020000000]	;4,12
	SUBI	X4,1
	TDNE	U1,[000000040000]	;19 LEFT EDGE
	TDNE	U2,[000020020000]	;12,20
	SUBI	X4,1
	TDNE	U1,[000004000000]	;14 RIGHT EDGE
	TDNE	U2,[010010000000]	;5,13
	SUBI	X4,1
	TDNE	U1,[000000004000]	;22 RIGHT EDGE
	TDNE	U2,[000010010000]	;13,21
	SUBI	X4,1
	TDNE	U1,[000040000000]	;11
	TDNE	U2,[040020000000]	;3,12
	SUBI	X4,1
	TDNE	U1,[000000004000] 	;22
	TDNE	U2,[000010000000]	;13
	JRST	.+3
	MOVE	U2,AK
	TDNN	U2,[000000000010]	;29
	SUBI	X4,1
	POPJ	PDP,

DEFINE	PIN	(USE)	<;PIN TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /PIN     /]>
	IFE	USE,<JRST	PINZ>>
PINZ:	MOVEI	X4,3
	MOVE	X1,PN
	SETCM	U1,X1
	MOVE	X2,AN
	SETCM	U2,X2
	SETCM	X3,Z
	JUMPE	X5,PINW
					;SINGLE CORNER
	TDNN	U1,[000312000000]	;9,10,13,15
	TDNE	U2,[000000214000]	;17,21,22
	JRST	.+3
	TDNN	X3,[000004100000]	;14,18 
	ADDI	X4,1
	TDNE	U1,[000000004000]	;22 BACK ROW PIN
	JRST	.+3
	TDNN	U2,[000000000012]	;29,31
	TDNE	X3,[000000000304]	;25,26,30 EMPTY
	SUBI	X4,1
	TDNE	U1,[041000000000]	;3,8  3 BY 2 LEFT
	JRST	.+3
	TDNN	U2,[000021020000]	;12,16,20
	TDNE	X3,[020042000000]	;4,11,15 EMPTY
	SUBI	X4,1
	TDNE	U1,[004200000000]	;6,9 3BY2 RIGHT
	JRST	.+3
	TDNN	U2,[000010210000]	;13,17,21
	TDNE	X3,[210004100000]	;1,5,14,18
	SUBI	X4,1
	SKIPN	U1,PK	;KING PINS
	POPJ	PDP,
	ADDI	X4,6
	TDNE	U1,[000040000000]	;11  LEFT EDGE
	TDNE	U2,[000020020000]	;12,20
	SUBI	X4,1
	TDNE	U1,[000000040000]	;19	LEFT EDGE
	TDNE	U2,[000000020020]	;20,28
	SUBI	X4,1
	TDNE	U1,[000004000000]	;14 RIGHT EDGE
	TDNE	U2,[000010010000]	;13,21
	SUBI	X4,1
	TDNE	U1,[000000004000]	;22 RIGHT EDGE
	TDNE	U2,[000000010010]	;21,29
	SUBI	X4,1
	TDNE	U1,[000000004000]	;22
	TDNE	U2,[000000010004]	;21,30
	SUBI	X4,1
	TDNE	U1,[000040000000]	;11
	TDNE	U2,[000000020000]	;20
	JRST	.+3
	MOVE	U2,AK
	TDNN	U2,[020000000000]	;4
	SUBI	X4,1
	POPJ	PDP,
;WHITE PASSIVE				SINGLE CORNER
PINW:	TDNN	U1,[000000123000]	;18,20,23,24
	TDNE	U2,[000061000000]	;11,12,16
	JRST	.+3
	TDNN	X3,[000002040000]	;15,19
	ADDI	X4,1
	TDNE	U1,[000040000000]	;11 BACK ROW
	JRST	.+3
	TDNN	U2,[120000000000]	;2,4
	TDNE	X3,[043000000000]	;3,7,8
	SUBI	X4,1
	TDNE	U1,[000000001040]	;24,27 3BY2 LEFT
	JRST	.+3
	TDNN	U2,[000021020000]	;12,16,20
	TDNE	X3,[000002040021]	;15,19,28,32
	SUBI	X4,1
	TDNE	U1,[000000000204]	;25,30 3BY2 RIGHT
	JRST	.+3
	TDNN	U2,[000010210000]	;13,17,21
	TDNE	X3,[000000104010]	;18,22,29
	SUBI	X4,1
	SKIPN	U1,PK	;KING PINS
	POPJ	PDP,
	ADDI	X4,6
	TDNE	U1,[000040000000]	;11 LEFT EDGE
	TDNE	U2,[020020000000]	;4,12
	SUBI	X4,1
	TDNE	U1,[000000040000]	;19 LEFT EDGE
	TDNE	U2,[000020020000]	;12,20
	SUBI	X4,1
	TDNE	U1,[000004000000]	;14 RIGHT EDGE
	TDNE	U2,[010010000000]	;5,13
	SUBI	X4,1
	TDNE	U1,[000000004000]	;22 RIGHT EDGE
	TDNE	U2,[000010010000]	;13,21
	SUBI	X4,1
	TDNE	U1,[000040000000]	;11
	TDNE	U2,[040020000000]	;3,12
	SUBI	X4,1
	TDNE	U1,[000000004000] 	;22
	TDNE	U2,[000010000000]	;13
	JRST	.+3
	MOVE	U2,AK
	TDNN	U2,[000000000010]	;29
	SUBI	X4,1
	POPJ	PDP,
;QUICKZ QUICKP QUICKW KEYSQZ NONUSZ FILESZ FILESM

DEFINE	QUICK	(USE)<;QUICK KING ATTEMPT
	IFN	USE,<MOVEI	U1,[ASCIZ /QUICK   /]>
	IFE	USE,<JRST	QUICKZ>>
QUICKZ:	SETZ	X4,
	MOVE	U1,PN
	JUMPE	X5,QUICKW
	AND	U1,[000017377377]
	JUMPE	U1,QUICKP
	ADDI	X4,1
	AND	U1,[000000377377]
	JUMPE	U1,QUICKP
	ADDI	X4,2
	AND	U1,[000000017377]
	JUMPE	U1,QUICKP
	ADDI	X4,3
	AND	U1,[000000000377]
	JUMPE	U1,QUICKP
	ADDI	X4,4
QUICKP:	POPJ	PDP,
QUICKW:	AND	U1,[377377360000]
	JUMPE	U1,QUICKP
	ADDI	X4,1
	AND	U1,[377377000000]
	JUMPE	U1,QUICKP
	ADDI	X4,2
	AND	U1,[377360000000]
	JUMPE	U1,QUICKP
	ADDI	X4,3
	AND	U1,[377000000000]
	JUMPE	U1,QUICKP
	ADDI	X4,4
	POPJ	PDP,

DEFINE	KEYSQ	(USE)<;KEY SQUARES 
	IFN	USE,<MOVEI	U1,[ASCIZ /KEYSQ   /]>
	IFE	USE,<JRST	KEYSQZ>>
KEYSQZ:	SETZ	X4,
	MOVE	U1,PN
	AND	U1,[000014060000]	;13,14,19,20
	JUMPE	U1,.+14
	CAQ	X1,X4
	POPJ	PDP,

	DEFINE	NONUSE	(USE)	<;NONUSE TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /NONUSE  /]>
	IFE	USE,<JRST	NONUSZ>>
NONUSZ:	MOVE	U1,A
	MOVE	U2,A
	MOVE	X4,A
	LSH	U1,11
	LSH	U2,-11
	IOR	X4,U1
	IORB	X4,U2
	MOVE	U1,U2
	AND	U1,[267267267267]	;EXCLUDE RIGHT 2 COLUMNS
	AND	U2,[356356356356]	;EXCLUDE LEFT 2 COLUMNS
	LSH	U1,1
	LSH	U2,-1
	IOR	X4,U1
	IORB	X4,U2
	MOVE	U1,U2
	LSH	U1,5
	LSH	U2,-5
	IOR	X4,U1
	IOR	X4,U2
	SETCA	X4
	AND	X4,PK
	SKIPE	X4
	MOVEI	X4,1
	POPJ	PDP,

DEFINE	FILES	(USE)<;FILES PIECE COUNT
	IFN	USE,<MOVEI	U1,[ASCIZ /FILES   /]>
	IFE	USE,<JRST	FILESZ>>

FILESZ:	MOVE	U1,P
	AND	U1,FILESM
	CAQ	X1,X4
	POPJ	PDP,

FILESM:	254074074065

;SYN
	DEFINE T1 (USE)<
	PRESS (USE)>

	DEFINE T2 (USE)<
	NEAR3 (USE)>

	DEFINE T3 (USE)<
	PAIRS (USE)>

	DEFINE T4 (USE)<
	GUARD (USE)>

	DEFINE T5 (USE)<
	EDGE (USE)>

	DEFINE T6 (USE)<
	DENY (USE)>

	DEFINE T7 (USE)<
	PINK (USE)>

	DEFINE T8 (USE)<
	RECAPT (USE)>

	DEFINE T9 (USE)<
	DIAG (USE)>

	DEFINE T10 (USE)<
	NONUSE (USE)>

	DEFINE T11 (USE)<
	KCENT (USE)>

	DEFINE T12 (USE)<
	UNDENY (USE)>

	DEFINE T13 (USE)<
	MOMENT (USE)>

	DEFINE T14 (USE)<
	DIAK (USE)>

	DEFINE T15 (USE)<
	DDQUAD (USE)>

	DEFINE T16 (USE)<
	MOBIL2 (USE)>


	DEFINE TT1 (USE)<
	PRESS (USE)>

	DEFINE TT2 (USE)<
	THREAT (USE)>

	DEFINE TT3 (USE)<
	DENY (USE)>

	DEFINE TT4 (USE)<
	GUARD (USE)>

	DEFINE TT5 (USE)<
	FORAFT (USE)>

	DEFINE TT6 (USE)<
	ALINE (USE)>

	DEFINE TT7 (USE)<
	FRONT (USE)>

	DEFINE TT8 (USE)<
	DDQUAD (USE)>

	DEFINE TT9 (USE)<
	SHOVES (USE)>

	DEFINE TT10 (USE)<
	NONUSE (USE)>

	DEFINE TT11 (USE)<
	KCENT (USE)>

	DEFINE TT12 (USE)<
	RECAPT (USE)>

	DEFINE TT13 (USE)<
	PINK (USE)>
	DEFINE TT14 (USE)<
	PAIRS (USE)>
	DEFINE TT15 (USE)<
	NEAR3 (USE)>
	DEFINE TT16 (USE)<
	MOBIL2 (USE)>


	DEFINE TTT1 (USE)<
	PRESS (USE)>
	DEFINE TTT2 (USE)<
	THREAT (USE)>
	DEFINE TTT3 (USE)<
	DENY (USE)>
	DEFINE TTT4 (USE)<
	GUARD (USE)>

	DEFINE TTT5 (USE)<
	PAIRS (USE)>
	DEFINE TTT6 (USE)<
	DORIO (USE)>
	DEFINE TTT7 (USE)<
	CROOK (USE)>
	DEFINE TTT8 (USE)<
	RECAPT (USE)>

	DEFINE TTT9 (USE)<
	SHOVES (USE)>
	DEFINE TTT10 (USE)<
	CRAMP (USE)>
	DEFINE TTT11 (USE)<
	FRONT (USE)>
	DEFINE TTT12 (USE)<
	QUICK (USE)>

	DEFINE TTT13 (USE)<
	MOMENT (USE)>
	DEFINE TTT14 (USE)<
	DDQUAD (USE)>
	DEFINE TTT15 (USE)<
	EDGE (USE)>
	DEFINE TTT16 (USE)<
	MOBIL2 (USE)>


	DEFINE TTTT1 (USE)<
	FORAFT (USE)>
	DEFINE TTTT2 (USE)<
	MIDDLE (USE)>
	DEFINE TTTT3 (USE)<
	THREAT (USE)>
	DEFINE TTTT4 (USE)<
	GUARD (USE)>

	DEFINE TTTT5 (USE)<
	DDQUAD (USE)>
	DEFINE TTTT6 (USE)<
	FORAFT (USE)>
	DEFINE TTTT7 (USE)<
	ALINE (USE)>
	DEFINE TTTT8 (USE)<
	QUICK (USE)>

	DEFINE TTTT9 (USE)<
	SHOVES (USE)>
	DEFINE TTTT10 (USE)<
	ADVAN (USE)>
	DEFINE TTTT11 (USE)<
	CENT (USE)>
	DEFINE TTTT12 (USE)<
	MOMENT (USE)>

	DEFINE TTTT13 (USE)<
	DORIO (USE)>
	DEFINE TTTT14 (USE)<
	CRAMP (USE)>
	DEFINE TTTT15 (USE)<
	EDGE (USE)>
	DEFINE TTTT16 (USE)<
	MOBIL2 (USE)>

;PHASEV PHASET CFERR1 CFERR3 CFERR2

	SUBTTL	FINAL SCORE EVALUATION
	PAGE

;******************************************************************
;     EVA CALCULATES A FINAL SCORE FROM THE MOST RECENT EVALUATION
;TERMS.
;	CFLAG SPECIFIES BY BITS WHICH TERMS ARE COMPUTED AN EV.
;CFLAG=0 SPECIFIES PIECE COUNT ONLY.
;
;THE RESULT IS RETURNED IN REGISTER C5.
;   IT IS ASSUMED THAT THE MOST RECENT RESULTS FROM EV HAVE BEEN
;LEFT IN REGISTER Q (UNLESS CFLAG = 0), AND THAT A,P,K, AND X5 ARE
;ALSO AS THEY WERE UPON THE LAST EXIT FROM EV.
;   ALL REGISTERS EXCEPT X2,X3,X4, AND PDP ARE USED.
;REGISTER X1 IS SAVED AND RESTORED.
;******************************************************************

PHASEV:	MOVE	Q,P		;COMPUTE PHASE
	IOR	Q,A
	CAQ	U5,U1
	MOVE	U5,PHASET(U1)
	MOVEM	U5,PHASE
	POPJ	PDP,

PHASET:	REPEAT	12,<	0>
	REPEAT	4,<	1>
	REPEAT	5,<	2>
	REPEAT	10,<	3>


;***************************************************************
;     ERROR ROUTINES
;***************************************************************


CFERR1:	MOVEI	U1,[ASCIZ/ EV OVERFLOW /]
	PUSHJ	PDP,PRINT
	MOVE	U1,Z
	PUSHJ	PDP,OCT2
	POPJ	PDP,
CFERR3:	MOVEI	U1,[ASCIZ/ SHIFT /]
	PUSHJ	PDP,PRINT
	MOVE	U1,Z
	PUSHJ	PDP,OCT2
	MOVEI	U1,[ASCIZ / LOCATION /]
	PUSHJ	PDP,PRINT
	HRRZ	U1,PDP
	PUSHJ	PDP,OCT2
	JRST	TERPRI	;WARNING MESSAGE FOR STORE HAS BEEN PRINTED
CFERR2:	MOVEI	U1,[ASCIZ/!/]
	PUSHJ	PDP,PRINT
	MOVEI	U2,740
	POPJ	PDP,
;TLIST

	SUBTTL	PARTIAL EVALUATION
	PAGE

;******************************************************************
;     EV CALCULATES AND STORES EVALUATION TERMS.
;IF CFLAG = 0  THEN  NOTHING IS DONE
;THE RESULTS ARE STORED IN REGISTER Q.
;   REGISTER X5 MUST HAVE THE COLOR OF THE BOARD IN IT
;(BLACK'S MOVE = 0), AND A, P, AND K MUST BE PROPERLY FILLED
;UPON ENTRY.  THESE 4 REGISTERS ARE SAVED, AS WELL AS X1,X2,X3,
;X4, AND PDP.  ALL REGISTERS ARE USED.
;******************************************************************




TLIST:	T1	1	;PHASE 0
	T2	1
	T3	1
	T4	1
	T5	1
	T6	1
	T7	1
	T8	1
	T9	1
	T10	1
	T11	1
	T12	1
	T13	1
	T14	1
	T15	1
	T16	1

	TT1	1	;PHASE 1
	TT2	1
	TT3	1
	TT4	1
	TT5	1
	TT6	1
	TT7	1
	TT8	1
	TT9	1
	TT10	1
	TT11	1
	TT12	1
	TT13	1
	TT14	1
	TT15	1
	TT16	1

	TTT1	1	;PHASE 2
	TTT2	1
	TTT3	1
	TTT4	1
	TTT5	1
	TTT6	1
	TTT7	1
	TTT8	1
	TTT9	1
	TTT10	1
	TTT11	1
	TTT12	1
	TTT13	1
	TTT14	1
	TTT15	1
	TTT16	1

	TTTT1	1	PHASE 3
	TTTT2	1
	TTTT3	1
	TTTT4	1
	TTTT5	1
	TTTT6	1
	TTTT7	1
	TTTT8	1
	TTTT9	1
	TTTT10	1
	TTTT11	1
	TTTT12	1
	TTTT13	1
	TTTT14	1
	TTTT15	1
	TTTT16	1
	Z		;LIST TERMINATOR
;EV EVD EVD2 EEB EEB2 TESTLS

EV:	SKIPN	CFLAG
	POPJ	PDP,
	MOVEM	X1,CFZ2	;SAVE REGISTER
	MOVEM	X4,CFZ1	;OTHERWISE, SAVE REGISTERS
	MOVEM	X3,CFZ3
	MOVEM	X2,CFZ4
	MOVEM	PDP,CFZ5
	MOVEM	U1,FA
	MOVEM	U2,BA
	MOVE	X1,A
	AND	X1,K
	MOVEM	X1,AK		;ACTIVE KINGS
	XOR	X1,A
	MOVEM	X1,AN		;ACTIVE NON-KINGS
	MOVE	X1,P
	AND	X1,K
	MOVEM	X1,PK		;PASSIVE KINGS
	MOVE	X2,X1
	XOR	X2,P
	MOVEM	X2,PN		;PASSIVE NON-KINGS
	MOVE	X2,P
	TRNE	X5,1		;TEST DIRECTION
	EXCH	X1,X2		;X1 NOW FP, X2 NOW BP
	MOVEM	X1,FP
	MOVEM	X2,BP
	EMAC	-4,U1,-10,RFB
	EMAC	-5,U1,-12,LFB
	EMAC	4,U2,10,LBB
	EMAC	5,U2,12,RBB
	EVMAC	U3,X2,4,12,-5,-4,RFM,RFD,RFU,5,RFT,RFB,RFR,LFB
	EVMAC	U4,X2,5,10,-4,-5,LFM,LFD,LFU,4,LFT,LFB,LFR,RFB
	EVMAC	U5,X1,-4,-12,5,4,LBM,LBD,LBU,-5,LBT,LBB,LBR,RBB
	EVMAC	Q,X1,-5,-10,4,5,RBM,RBD,RBU,-4,RBT,RBB,RBR,LBB
	MOVE	U5,CFLAG
	MOVE	PDP,CFZ5
	MOVE	U1,PHASE
	MOVE	Z,TESTLS(U1)
	HRRM	Z,EVD
	HRRM	Z,EVD2
	SETZ	Q,
	MOVEI	U4,17		;16 TERMS TOTAL
	TRNN	U5,@TESTM(U4)
	JRST	.+4		;BYPASS THIS TERM
EVD:	PUSHJ	PDP,TESTS(U4)
	LSH	X4,@TESTSH(U4)
	IOR	Q,X4
	SUBI	U4,1
	CAILE	U4,7		;IS IT TIME FOR SECOND HALF
	JRST	.-7		;NO
	MOVE	X3,CFZ3
	MOVEM	Q,EEB(X3)
	SETZ	Q,
	TRNN	U5,@TESTM(U4)
	JRST	.+4		;BYPASS THIS TERM
EVD2:	PUSHJ	PDP,TESTS(U4)
	LSH	X4,@TESTSH(U4)
	IOR	Q,X4
	SOJGE	U4,.-5
	MOVE	X3,CFZ3
	MOVEM	Q,EEB2(X3)
	MOVE	X4,CFZ1		;RESTORE REGISTERS
	MOVE	X2,CFZ4
	MOVE	X1,CFZ2
	POPJ	PDP,	;RETURN

	Z
	Z
EEB:	BLOCK	20
	Z
	Z
EEB2:	BLOCK	20

TESTLS:	TESTS		;GET TESTS FOR CORRECT PHASE
	TESTS+20
	TESTS+40
	TESTS+60
;TESTM TESTSH TESTS

TESTM:	400000
	200000
	100000
	40000
	20000
	10000
	4000
	2000
	1000
	400
	200
	100
	40
	20
	10
	4


TESTSH:	40
	34
	30
	24
	20
	14
	10
	4
	40
	34
	30
	24
	20
	14
	10
	4

TESTS:	T1	0
	T2	0
	T3	0
	T4	0
	T5	0
	T6	0
	T7	0
	T8	0
	T9	0
	T10	0
	T11	0
	T12	0
	T13	0
	T14	0
	T15	0
	T16	0

	TT1	0
	TT2	0
	TT3	0
	TT4	0
	TT5	0
	TT6	0
	TT7	0
	TT8	0
	TT9	0
	TT10	0
	TT11	0
	TT12	0
	TT13	0
	TT14	0
	TT15	0
	TT16	0

	TTT1	0
	TTT2	0
	TTT3	0
	TTT4	0
	TTT5	0
	TTT6	0
	TTT7	0
	TTT8	0
	TTT9	0
	TTT10	0
	TTT11	0
	TTT12	0
	TTT13	0
	TTT14	0
	TTT15	0
	TTT16	0

	TTTT1	0
	TTTT2	0
	TTTT3	0
	TTTT4	0
	TTTT5	0
	TTTT6	0
	TTTT7	0
	TTTT8	0
	TTTT9	0
	TTTT10	0
	TTTT11	0
	TTTT12	0
	TTTT13	0
	TTTT14	0
	TTTT15	0
	TTTT16	0

;CFZ1 CFZ2 CFZ3 CFZ4 CFZ5 CFZ10 CFZ11 CEMPTY CFTAB2 CFTAB3 CFLAG DENYC THRTC UMB CFMSK CFMSK2 PHASE KSTART MSK2 OFFEDG DDIM CMSK DMSK WGRD1 WGRD2 BGRD1 BGRD2 RMASK SHOVM VULW1 VULW2 VULW3 VULW4 VULB1 VULB2 VULB3 VULB4 MSK1 MSK3 MSK4

CFZ1:	Z	;TEMPORARY STORAGE
CFZ2:	Z
CFZ3:	Z
CFZ4:	Z
CFZ5:	Z
CFZ10:	Z	;BACKUP LOCATION FOR PASK
CFZ11:	Z	;BACKUP LOCATION FOR ACTK
CEMPTY:	Z	;TEMPORARY LOCATION FOR EMPTY, ET.AL.
CFTAB2:	BLOCK	400	;TABLE 2 FOR EVALUATION
CFTAB3:	BLOCK	1000	;TABLE 3 FOR EVALUATION
CFLAG:	777777	;SET BY PROGRAM
DENYC:	Z	;SPECIAL VALUES USED IN EVALUATION TERMS
THRTC:	Z
UMB:	Z
CFMSK:	202020202020	;OF SIGT21 AND SIGTF
CFMSK2:	207777777777	;MASK
PHASE:	Z
KSTART:	Z		;INITIAL KINGS

MSK2:	360000000017	;SPECIAL BOARD MASKS
OFFEDG:	357377377367

DDIM:	004306143040
CMSK:	377372
DMSK:	137377000000
WGRD1:	5
WGRD2:	106
BGRD1:	240000000000
BGRD2:	142000000000
RMASK:	367367367367
SHOVM:	357357357357
VULW1:	000340000000
VULW2:	000200000000
VULW3:	16
VULW4:	3
VULB1:	7000
VULB2:	1000
VULB3:	160000000000
VULB4:	300000000000
MSK1:	030030030030
MSK3:	040000000004
MSK4:	200000000001


	END